/*
 * Pripojeni.java
 * Trida na vztvore HTTP spojeni a presnos dat do databaze
 * 
*/
package tcinert;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import tcinert.Zaznam;

/**
 * Trida Pripojeni
 * - navazani GPRS spojeni a upload dat
 * @author Tomas Cinert
 */
public class Pripojeni implements Runnable{
    HttpConnection con=null;
    InputStream vstupniStream = null;
    DataOutputStream vystupniStream=null;
    Zaznam up;
    String[][] data;
    boolean loop;
    /** Creates a new instance of Pripojeni */
   
    /**
     *Konstruktor
     * - vytvori http spojeni
     * - otevre vstupni stream pro cteni odezvy
     * @throws IOException - pokud se nepodari otevrit spojeni
     *          Exception - pokud neni odezva
     **/        
    public Pripojeni(Zaznam zaznam,String[][] data) throws Exception {
            con=(HttpConnection) Connector.open("http://test.webingenia.com/ThisIsMe");  // Otevreni spojeni
            con.setRequestMethod(HttpConnection.POST);       // Zaslan pozadavek
            vstupniStream=con.openInputStream();         // Otevreni vstupniho streamu
            this.up=zaznam;
            this.data=data;
            loop=true;
        
           
    }
    
    public void uploadDat() throws Exception       // test
    {
         vystupniStream = con.openDataOutputStream();
         for(int i=0;i<data[0].length;i++){     // Mozna cyklus volat zvenku
             vystupniStream.writeUTF(data[0][i]);
         }
         if (con.getResponseCode() != HttpConnection.HTTP_OK)        // Pokud spojeni probehlo v poradku
            {
                loop=false;
                throw new IllegalStateException();      // Mozna uplne vynechat .... 
            }
         else
         {
             loop=false;
             data=null;     // Data odeslany
         }
         vystupniStream.flush();
         vystupniStream.close();
         
    }
    public void uzavreni()
    {
        try {
            vstupniStream.close();
            con.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
    }

    public void run() {
        while(loop){
        try {
            uploadDat();
            up.zapis("Upload dat probehl uspesne",typZapisu.Informativni);
        } catch (Exception ex) {
            up.zapis("Upload neprobehl z duvodu"+ex.toString(),typZapisu.Chybovy);
        }
        uzavreni();
        }
    }
    
}
